var models = require('../models'),
    WCSession = models.WCSession,
    User = models.User;
var debug = require('debug');
var util_tool = require('../utils');
var settings = require('../config');

module.exports = function (app) {
    app.get("/grab", function (req, res) {
        //咨询用户openid
        var sendopenid = req.query.sendopenid;
        //获取抢单者的openid
        var receiveopenid = req.query.receiveopenid;
        var sessionDao = new WCSession();
        //判断抢单者是否已经拥有未过期的会话
        sessionDao.findSessionByOpenId({
            status: 1
        }, receiveopenid, function (err, result) {
            if (err) {
                debug("findSessionByOpenId fail", err);
            } else {
                if (result.length > 0) {
                    rt = "您有未结束的咨询对话，请点击‘咨询师入口’中的‘再次接诊’将对话结束!";
                    res.render("grab", {
                        title: "医疗咨询",
                        result: rt,
                        icon: "grabed"
                    });
                } else {
                    //判断此单是否已经被抢
                    sessionDao.findSessionBySendOpenId(sendopenid, function (err, result) {
                        debug("the result is", result);
                        var rt;
                        if (result.length > 0) {
                            //与咨询用户建立会话（如果用户创建了多次会话抢单成功后改变该用户的所有会话状态）
                            sessionDao.updateSessionBySendOpneId(sendopenid, receiveopenid, function (err) {
                                if (err) {
                                    rt = "对不起，由于系统原因，抢单失败!!";
                                    debug("grab fail", err);
                                    res.render("grab", {
                                        title: "医疗咨询",
                                        result: rt,
                                        icon: "grabed"
                                    });
                                } else {
                                    //修改用户咨询次数
                                    var userDao = new User();
                                   /* userDao.updateUserCountByOpneId(sendopenid, function (err) {*///此处不修改咨询次数，待完成有效沟通后再修改，2014-10-11
                                        userDao.findUserByOpenid(receiveopenid, function (err, user) {
                                            var icon;
                                            if (err) {
                                                rt = "对不起，由于系统原因，抢单失败!!";
                                                icon = "fail";
                                                res.render("grab", {
                                                    title: "医疗咨询",
                                                    result: rt,
                                                    icon: icon
                                                });
                                            } else {
                                                //查询此id是否有提问过并且状态为0
                                                sessionDao.findSessionBySendOpenId(receiveopenid, function (err, result) {
                                                    if(err){
                                                        debug("findSessionBySendOpenId fail", err);
                                                    }else{
                                                        icon = "success";
                                                        rt = "恭喜您，抢单成功，您可以直接和用户进行对话了!!";
                                                        var msg = {
                                                            sendopenid: sendopenid,
                                                            sendtextmsg: "系统：咨询师" + user.nickname + "接手您的问题了！下面的对话只有您和" + user.nickname + "咨询师能够看到。此对话的有效时间为" + settings.wc_session_timeout / 60 + "分钟。请继续..."
                                                        }
                                                        if(result.length>0){
                                                            //修改此状态为2结束自己发起的会话
                                                            sessionDao.updateSessionBySendOpneId2(receiveopenid, function(err){
                                                                if(err){
                                                                    debug("updateSessionBySendOpneId2 fail", err);
                                                                }else{
                                                                    new util_tool().sendText(msg, function (err) {
                                                                        if (err) debug("sendText fail", err);
                                                                    });
                                                                    /*res.render("grab", {
                                                                        title: "医疗咨询",
                                                                        result: rt,
                                                                        icon: icon
                                                                    });*/
                                                                    sendMessages(res,rt,icon);
                                                                }
                                                            });
                                                        }else{
                                                            new util_tool().sendText(msg, function (err) {
                                                                if (err) debug("sendText fail", err);
                                                            });
                                                            sendMessages(res,rt,icon);
                                                        }
                                                    }
                                                });
                                            }

                                        })
                                    /*})*/
                                }
                            })
                        } else {
                            rt = "单已被抢,您手法太慢，继续加油哦!!";
                            res.render("grab", {
                                title: "医疗咨询",
                                result: rt,
                                icon: "grabed"
                            });
                        }
                    });
                }
            }
        })


    })
}

function sendMessages(res, rt, icon){
    res.render("grab", {
        title: "医疗咨询",
        result: rt,
        icon: icon
    });
}